Carlos Garnacho [Tue, 8 Apr 2014 19:18:38 +0000 (21:18 +0200)]
colorswatch: Replace GtkPressAndHold
GtkGestureLongPress and GtkGestureMultiPress are both used
to replace it.
Carlos Garnacho [Tue, 8 Apr 2014 19:17:54 +0000 (21:17 +0200)]
colorscale: Replace GtkPressAndHold with GtkLongPressGesture
Carlos Garnacho [Tue, 8 Apr 2014 19:17:00 +0000 (21:17 +0200)]
colorplane: Replace GtkPressAndHold with GtkLongPressGesture
Carlos Garnacho [Tue, 8 Apr 2014 19:15:06 +0000 (21:15 +0200)]
entry: Don't show text handles too eagerly on button press
Instead do so on button release, or after text selection dragging
starts.
Carlos Garnacho [Tue, 8 Apr 2014 19:11:27 +0000 (21:11 +0200)]
longpress: Ensure check() happens after cancel()
And delegate on GtkGesture::check(), it does deal better with
extra fleeting touches.
Carlos Garnacho [Tue, 8 Apr 2014 19:10:43 +0000 (21:10 +0200)]
longpress: fix reentrancy on ::reset()
Carlos Garnacho [Tue, 8 Apr 2014 19:09:44 +0000 (21:09 +0200)]
gesturemultipress: fix reentrancy on ::reset()
Carlos Garnacho [Tue, 8 Apr 2014 19:06:39 +0000 (21:06 +0200)]
gesturesingle: check the current sequence before resetting the pressed button
Carlos Garnacho [Tue, 8 Apr 2014 19:05:00 +0000 (21:05 +0200)]
scrolledwindow: update to gesture widget-level API changes
Carlos Garnacho [Tue, 8 Apr 2014 19:03:07 +0000 (21:03 +0200)]
window: update to gesture widget-level API changes
Carlos Garnacho [Tue, 8 Apr 2014 19:02:44 +0000 (21:02 +0200)]
treeview: update to gesture widget-level API changes
Carlos Garnacho [Tue, 8 Apr 2014 19:01:47 +0000 (21:01 +0200)]
drag: remove unused #define
Carlos Garnacho [Tue, 8 Apr 2014 19:01:13 +0000 (21:01 +0200)]
eventcontroller: Add documentation blurb
Carlos Garnacho [Tue, 8 Apr 2014 19:00:26 +0000 (21:00 +0200)]
dnd: Update to gesture widget-level API changes
Carlos Garnacho [Tue, 8 Apr 2014 18:59:16 +0000 (20:59 +0200)]
demo: Update to gesture widget-level API changes
Carlos Garnacho [Tue, 8 Apr 2014 18:55:30 +0000 (20:55 +0200)]
widget: refactor gesture integration
Listen for notify::sequence-state-changed on the controller, so the
only way to manipulate a sequence state are gtk_gesture_set_sequence_state()
and gtk_gesture_set_state().
Also, make use of gesture groups, so the sequence state is set at once
on all gestures pertaining to a single group. Within a widget, if a sequence
is claimed on one group, it is made to be denied on every other group.
Carlos Garnacho [Tue, 8 Apr 2014 18:47:38 +0000 (20:47 +0200)]
gesture: Add grouping API
This API eliminates the need for overriding
GtkWidget::sequence-state-changed virtually everywhere. Grouped
gestures share common states for a same GdkEventSequence, so the
state of sequences stay in sync across those.
Carlos Garnacho [Tue, 8 Apr 2014 18:46:26 +0000 (20:46 +0200)]
gesture: Add gtk_gesture_set_state() helper.
This function sets the state on all sequences where it actually
can, just a helper function to avoid iterating over sequences
yourself.
Carlos Garnacho [Tue, 8 Apr 2014 18:45:18 +0000 (20:45 +0200)]
gesture: emit the current state on ::sequence-state-changed
Carlos Garnacho [Tue, 8 Apr 2014 18:44:38 +0000 (20:44 +0200)]
gesture: group continue conditions together
Carlos Garnacho [Tue, 8 Apr 2014 18:43:52 +0000 (20:43 +0200)]
gesture: return TRUE if the sequence state was already set
Carlos Garnacho [Tue, 8 Apr 2014 18:41:09 +0000 (20:41 +0200)]
gesture: fix compiler warning
Carlos Garnacho [Tue, 8 Apr 2014 18:39:44 +0000 (20:39 +0200)]
gesture: ignore events if now widget window was found
Carlos Garnacho [Tue, 8 Apr 2014 18:25:53 +0000 (20:25 +0200)]
eventcontroller: Add propagation-phase property
This is so we don't have to specify the capture phase for
every controller. The default "bubble" value will be sane
on most situations.
Carlos Garnacho [Tue, 8 Apr 2014 18:24:30 +0000 (20:24 +0200)]
treeview: remove superfluous GTK+ grabs
Carlos Garnacho [Tue, 8 Apr 2014 18:23:43 +0000 (20:23 +0200)]
textview: remove superfluous GTK+ grabs
Carlos Garnacho [Tue, 8 Apr 2014 18:23:00 +0000 (20:23 +0200)]
iconview: remove superfluous GTK+ grabs
Carlos Garnacho [Tue, 8 Apr 2014 18:21:50 +0000 (20:21 +0200)]
combobox: remove superfluous GTK+ grabs
Carlos Garnacho [Tue, 8 Apr 2014 18:21:17 +0000 (20:21 +0200)]
cellrendereraccel: remove superfluous GTK+ grabs
Carlos Garnacho [Thu, 3 Apr 2014 12:44:58 +0000 (14:44 +0200)]
Revert "gtk: Remove propagation limit of captured events on the grab widget"
This reverts commit
6511f411955adba4f960b8b07d39b93785afe33e.
Carlos Garnacho [Mon, 31 Mar 2014 10:27:43 +0000 (12:27 +0200)]
longpress: Use xsettings to determine long press duration
GtkSettings::gtk-long-press-time is used to this effect.
Carlos Garnacho [Mon, 31 Mar 2014 10:22:11 +0000 (12:22 +0200)]
settings: Add gtk-long-press-time setting
This setting determines the duration of a button/touch press to
be considered a long press.
Carlos Garnacho [Fri, 28 Mar 2014 14:44:11 +0000 (15:44 +0100)]
window: Use gestures for window moving/resizing
A multipress gesture is used to control all this, replacing
single/double click custom code, and triggering window dragging
when the multipress is stopped, yet active (ie. the sequence remains
pressed).
Carlos Garnacho [Thu, 27 Mar 2014 11:31:28 +0000 (12:31 +0100)]
treeview: Use multipress gesture for row activation
Replace custom double click detection with multipress gesture
Carlos Garnacho [Fri, 28 Mar 2014 22:23:38 +0000 (23:23 +0100)]
dnd: Use GtkGestureDrag to initiate DnD
This gesture is used by gtk_drag_source_set() to determine
whether dragging moved past the threshold. The gesture events
are handled via the usual ::event callbacks, so we don't mess
up with callers expecting that to happen in a signal handler.
If the sequence gets claimed somewhere else in the event widget
stack, the DnD gesture will be cancelled.
Carlos Garnacho [Wed, 26 Mar 2014 13:06:09 +0000 (14:06 +0100)]
scrolledwindow: Ensure the dragging sequence gets denied if more touches come in
This allows children to receive an emulated press, and handle it together with
the new touch that made the scrolledwindow sequence denied.
Carlos Garnacho [Wed, 26 Mar 2014 09:53:42 +0000 (10:53 +0100)]
scrolledwindow: Fix overshoot coordinates
With gtk_gesture_get_point() returning events in
gtk_event_controller_get_widget() coordinates, we no longer need
to compensate for the overshoot here.
Carlos Garnacho [Wed, 26 Mar 2014 09:49:21 +0000 (10:49 +0100)]
widget: Add gtk_widget_set_gesture_state()
This helper function ensures the state is propagated for
all the active sequences in the given gesture.
Carlos Garnacho [Wed, 26 Mar 2014 09:25:09 +0000 (10:25 +0100)]
widget: Improve button press emulation on sequence denied
Ensure that state being set on pointer emulating touches actually
gets propagated properly on widgets with gestures that only handle
pointer events.
Carlos Garnacho [Tue, 25 Mar 2014 12:45:17 +0000 (13:45 +0100)]
swipe: Dont emit swipe() if the gesture was denied rather than finished
Carlos Garnacho [Tue, 25 Mar 2014 12:22:51 +0000 (13:22 +0100)]
drag: Make API offsets based
It is generally more useful to get offsets right away,
than having to calculate those from the start point.
Carlos Garnacho [Fri, 21 Mar 2014 18:23:37 +0000 (19:23 +0100)]
scrolledwindow: Use GtkGestureSingle API
Carlos Garnacho [Mon, 24 Mar 2014 13:45:55 +0000 (14:45 +0100)]
scrolledwindow: Update gesture API change.
Carlos Garnacho [Mon, 24 Mar 2014 13:44:27 +0000 (14:44 +0100)]
demo: Update to gesture API change
Carlos Garnacho [Mon, 24 Mar 2014 13:42:13 +0000 (14:42 +0100)]
widget: Reset gestures on grab-notify
If it is determined that the gesture will stop receiving
events, reset the gesture altogether.
Carlos Garnacho [Mon, 24 Mar 2014 13:35:17 +0000 (14:35 +0100)]
widget: Make helper gesture API take GtkGestures
GtkEventController may be certainly useful to keep event
handling self-contained in other places than gestures, but
the current widget API is highly related to gestures, so
just using GtkGesture as the argument there will be quite
more convenient. The other places where GtkEventController
make sense as a base object will better provide their own
hooks.
Carlos Garnacho [Mon, 24 Mar 2014 12:19:53 +0000 (13:19 +0100)]
Add: GTK_PHASE_NONE value to GtkCapturePhase.
Gestures attached with this phase will expect callers to have it
receive events through gtk_event_controller_handle_event(), but
the gesture will still be notified of sequence state changes,
grabs, etc...
Carlos Garnacho [Mon, 24 Mar 2014 12:11:47 +0000 (13:11 +0100)]
gesture: check the gesture after denying a sequence.
So the gesture emits end() timely.
Carlos Garnacho [Mon, 24 Mar 2014 12:04:51 +0000 (13:04 +0100)]
gesture: Offer always coordinates in the gesture widget coordinate space
Translate events meant for other widgets/windows, so gtk_gesture_get_point()
always returns coordinates based on the gtk_event_controller_get_widget()
allocation.
Carlos Garnacho [Mon, 24 Mar 2014 11:21:38 +0000 (12:21 +0100)]
multipress: Remove unused signal argument
Carlos Garnacho [Fri, 21 Mar 2014 18:45:27 +0000 (19:45 +0100)]
swipe: Make a subclass of GtkGestureSingle
Carlos Garnacho [Fri, 21 Mar 2014 18:39:21 +0000 (19:39 +0100)]
drag: Make a subclass of GtkGestureSingle
Carlos Garnacho [Fri, 21 Mar 2014 18:21:56 +0000 (19:21 +0100)]
multipress: Make a subclass of GtkGestureSingle
The redundant API has been removed here.
Carlos Garnacho [Fri, 21 Mar 2014 17:57:32 +0000 (18:57 +0100)]
longpress: Make a subclass of GtkGestureSingle
the redundant API here has been removed.
Carlos Garnacho [Fri, 21 Mar 2014 17:13:41 +0000 (18:13 +0100)]
gesture: Only recognize gestures with as many interacting touches as those handled
If a gesture has denied sequences (so those are presumably handled above/below
the widget), it shouldn't attempt to handle extra touches, even if those end
up matching the expected number of touches.
Carlos Garnacho [Fri, 21 Mar 2014 17:09:38 +0000 (18:09 +0100)]
gesture: Limit API calls to non-denied sequences
Gestures do track those internally, but information about those
shouldn't be leaked on calls.
Carlos Garnacho [Fri, 21 Mar 2014 16:47:06 +0000 (17:47 +0100)]
gesture: Require BUTTON_PRESS/TOUCH_BEGIN for sequences to be initiated.
Gestures should always receive one of such events in order to be activated,
and the propagation mechanism will ensure they do so if the original event
was caught up the widget hierarchy by another gesture that is now declining
the sequence.
Carlos Garnacho [Fri, 21 Mar 2014 16:34:41 +0000 (17:34 +0100)]
gesture: Only track non denied sequences in get_last_updated_sequence()
Carlos Garnacho [Fri, 21 Mar 2014 16:31:19 +0000 (17:31 +0100)]
gesture: cancel all ongoing sequences on reset()
Carlos Garnacho [Fri, 21 Mar 2014 16:17:42 +0000 (17:17 +0100)]
gesture: Skip non-device events early.
Carlos Garnacho [Fri, 21 Mar 2014 16:14:53 +0000 (17:14 +0100)]
gesture: Add gtk_gesture_[sg]et_window()
This can be used to restrict a gesture to an specific GdkWindow,
all events will be checked to happen on/within that window.
Carlos Garnacho [Fri, 28 Mar 2014 19:35:53 +0000 (20:35 +0100)]
docs: Add GtkGestureSingle to docs
Carlos Garnacho [Fri, 21 Mar 2014 14:31:12 +0000 (15:31 +0100)]
gesture: Remove the touch-only property
This is handled in GtkGestureSingle.
Carlos Garnacho [Fri, 21 Mar 2014 14:05:29 +0000 (15:05 +0100)]
Add GtkGestureSingle
This is a GtkGesture subclass, specific to single-touch (or
mouse operated) gestures.
Matthias Clasen [Fri, 7 Mar 2014 02:17:44 +0000 (21:17 -0500)]
...and add the right include instead
Matthias Clasen [Fri, 7 Mar 2014 02:13:57 +0000 (21:13 -0500)]
Remove a doubled line
Carlos Garnacho [Mon, 3 Mar 2014 20:40:19 +0000 (21:40 +0100)]
scrolledwindow: Use gesture button/touch press synthesization
This makes scrolled window fully compatible again wrt the
GtkScrolledWindow::capture-button-press property.
Carlos Garnacho [Mon, 3 Mar 2014 19:47:43 +0000 (20:47 +0100)]
widget: Propagate touch/button press events when a sequence is denied
If the captured touch begin or button press event have been consumed
for the given sequence, propagate it upwards if the sequence goes from
claimed to denied, so the widgets on the way to the event widget receive
a coherent event stream now that they're going to receive events.
Carlos Garnacho [Mon, 3 Mar 2014 19:46:10 +0000 (20:46 +0100)]
gesture: Add private getter to know whether a touch begin was handled
If GDK_TOUCH_BEGIN was handled/consumed for a sequence, or GDK_BUTTON_PRESS was
handled for the mouse gesture, this function will return TRUE.
Carlos Garnacho [Mon, 3 Mar 2014 13:08:45 +0000 (14:08 +0100)]
widget: Implement hierarchy-level mechanism to claim/deny sequences
The policy of sequence states has been made tighter on GtkGesture,
so gestures can never return to a "none" state, nor get out of a
"denied" state, a "claimed" sequence can go "denied" though.
The helper API at the widget level will first emit
GtkWidget::sequence-state-changed on the called widget, and then
notify through the same signal to every other widget in the captured
event chain. So the effect of that signal is twofold, on one hand
it lets the original widget set the state on its attached controllers,
and on the other hand it lets the other widgets freely adapt to the
sequence state changing elsewhere in the event widget chain.
By default, that signal updates every controller on the first usecase,
and propagates the default gesture policy to every other widget in the
chain on the second. This means that, by default:
1) Sequences start out on the "none" state, and get propagated through
all the event widget chain.
2) If a widget in the chain denies the sequence, all other widgets are
unaffected.
3) If a widget in the chain claims the sequence, then:
3.1) Every widget below the claiming widget (ie. towards the event widget)
will get the sequence cancelled.
3.2) Every widget above the claiming widget that had the sequence as "none"
will remain as such, if it was claimed it will go denied, but that should
rarely happen.
This behavior can be tweaked through the GtkWidget::sequence-state-changed and
GtkGesture::event-handled vmethods, although this should be very rarely done.
Carlos Garnacho [Thu, 27 Feb 2014 16:41:03 +0000 (17:41 +0100)]
docs: Add GtkWidget gesture functions
Carlos Garnacho [Wed, 26 Feb 2014 14:48:21 +0000 (15:48 +0100)]
scrolledwindow: port to GtkGesture
The kinetic scrolling feature is now implemented using a
GtkGestureDrag and a GtkGestureSwipe, plus a GtkGestureLongPress
in order to denying the sequence, so it is possibly handled
underneath.
Carlos Garnacho [Wed, 26 Feb 2014 12:07:08 +0000 (13:07 +0100)]
widget: Add widget-level handling of touch sequence state.
These functions ATM do nothing but proxying the controller(s) state
with the given sequence.
Carlos Garnacho [Wed, 26 Feb 2014 11:50:31 +0000 (12:50 +0100)]
widget: Hook GtkEventController to widget event processing.
A controller can be optionally hooked on the capture or the bubble
phase, so the controller will automatically receive and handle events
as they arrive without further interaction.
Carlos Garnacho [Mon, 24 Feb 2014 13:51:27 +0000 (14:51 +0100)]
gtk: Remove propagation limit of captured events on the grab widget
Now, all captured events run from the toplevel to the deepmost widget,
regardless of GTK+ grabs. This makes captured events more useful to
event controllers if used together in the hierarchy with widgets doing
old fashioned event handling and GTK+ grabs.
Carlos Garnacho [Thu, 17 Jan 2013 20:12:39 +0000 (21:12 +0100)]
gtk-demo: Add simple gestures demo
Carlos Garnacho [Thu, 17 Jan 2013 20:11:47 +0000 (21:11 +0100)]
hook GtkGesture* into docs generation
Carlos Garnacho [Thu, 27 Feb 2014 14:26:48 +0000 (15:26 +0100)]
Add GtkGestureMultiPress
This gesture handles any number of clicks, ensuring multiple presses
stay within thresholds and timeouts. When anything of that happens,
the gesture is reset and press count starts from 1 again.
Optionally, the gesture can be given a rectangle, used in in presses > 1
to ensure the consecutive presses happen on user imposed areas.
Carlos Garnacho [Thu, 20 Feb 2014 16:04:49 +0000 (17:04 +0100)]
Add GtkGestureDrag
This gesture interprets and reports drags as an offset to the drag
start point.
Carlos Garnacho [Thu, 17 Jan 2013 20:08:20 +0000 (21:08 +0100)]
Add GtkGestureZoom
This gesture interprets and reports relative scale differences when fed
with events from two different GdkEventSequences.
Carlos Garnacho [Thu, 17 Jan 2013 20:06:06 +0000 (21:06 +0100)]
Add GtkGestureRotate
This gesture implementation recognizes rotations when fed with
events from two different GdkEventSequences
Carlos Garnacho [Thu, 17 Jan 2013 20:02:28 +0000 (21:02 +0100)]
Add GtkGestureSwipe
This gesture implementation recognices swipes on any direction.
The "swipe" signal has the X/Y velocity vector components, so
those can be used for direction guessing and velocity thresholds.
Carlos Garnacho [Thu, 17 Jan 2013 22:57:06 +0000 (23:57 +0100)]
Add GtkGestureLongPress
This gesture interprets long presses with variable delays
and thresholds
Carlos Garnacho [Thu, 17 Jan 2013 19:59:07 +0000 (20:59 +0100)]
Add GtkGesture
This a more specific abstract type that handles one or multiple
streams of pointer/touch events.
Carlos Garnacho [Thu, 17 Jan 2013 19:55:24 +0000 (20:55 +0100)]
Add GtkEventController
This is a basic abstract type that handles GdkEvents.
Benjamin Otte [Fri, 23 May 2014 17:27:53 +0000 (19:27 +0200)]
themingbackground: Outset shadows require border box
They are drawn relative to the border box, not relative to the padding
box.
Benjamin Otte [Mon, 19 May 2014 13:32:39 +0000 (15:32 +0200)]
css: Make getter function a real getter
Initialize the passed-in value, don't treat it as an in-out parameter.
Matthias Clasen [Fri, 23 May 2014 16:17:56 +0000 (12:17 -0400)]
testsuite: Add more icon names
These were found by looking over the GTK+ sources and ui files.
Matthias Clasen [Fri, 23 May 2014 15:52:12 +0000 (11:52 -0400)]
Add more icons to check-icon-names
These are icons which are used as GtkArrow replacement, and
icons used for the volume button.
Matthias Clasen [Fri, 23 May 2014 15:31:53 +0000 (11:31 -0400)]
testsuite: Run reftests with GTK_DEBUG=icontheme
This will hopefully help to track down some hard-to-squash
failures that only happen in gnome-continuous.
Benjamin Otte [Fri, 23 May 2014 14:35:08 +0000 (16:35 +0200)]
testsuite: Add a test for icon names
This test just checks that all the icon names that GTK uses are present
in the default icon theme.
As icon names are not checked programmatically and we do not want to run
into missing-icon icons in the code, this test seems necessary.
For now, it's just a stub that tests stock icons.
Matthias Clasen [Fri, 23 May 2014 02:45:56 +0000 (22:45 -0400)]
GtkButton: tighten code a bit
Make it so we only use GtkMisc in one place.
Matthias Clasen [Thu, 22 May 2014 22:32:37 +0000 (18:32 -0400)]
inspector: Repeat the keybinding warning
Show the confirmation dialog every time the keybinding is used,
until the user clicks OK.
Matthias Clasen [Thu, 22 May 2014 22:31:11 +0000 (18:31 -0400)]
inspector: avoid a warning on destroy
We are only hiding the window now, so a memory management
error has crept into the destroy path.
Benjamin Otte [Thu, 22 May 2014 20:35:39 +0000 (22:35 +0200)]
Revert "Fix crash"
This reverts commit
024c11dd66dfda5efb110f55ecec93801f21c0ed.
It's not a crash fix to cause a return_val_if_fail() to happen.
Benjamin Otte [Thu, 22 May 2014 20:34:17 +0000 (22:34 +0200)]
reftests: Fix icon-vfuncs reftest
The reftest broke when font size lead to labels > 16px.
Behdad Esfahbod [Thu, 22 May 2014 19:52:01 +0000 (15:52 -0400)]
Fix crash
Matthias Clasen [Thu, 22 May 2014 19:46:42 +0000 (15:46 -0400)]
docs: Include input handling overview
Now that it is not entirely empty anymore, lets include it.
Matthias Clasen [Thu, 22 May 2014 19:45:31 +0000 (15:45 -0400)]
Some more input handling docs
Matthias Clasen [Thu, 22 May 2014 19:16:09 +0000 (15:16 -0400)]
Fill in some content in the input handling overview